/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.wpi.first.wpilibj.templates;

/**
 * Class containing constants for 2011 robot
 * @author robert
 */
public class Const2011 implements Const {
    /// compressor switch
    public int COMPSWITCH() {return 5;}
    /// compressor relay
    public int COMPRELAY() {return 1;}

    /// left light port
    public int LIGHTLEFT() {return 6;}
    /// middle light port
    public int LIGHTMIDDLE() {return 7;}
    /// right light port
    public int LIGHTRIGHT() {return 8;}

    /// left encoder port 1
    public int LEFTENCODER1() {return 9;}
    /// left encoder port 2
    public int LEFTENCODER2() {return 10;}

    /// right encoder port 1
    public int RIGHTENCODER1() {return 13;}
    /// right encoder port 2
    public int RIGHTENCODER2() {return 14;}

    /// BCD port 1
    public int BCD1() {return 11;}
    /// BCD port 2
    public int BCD2() {return 12;}

    /// first left jaguar
    public int LEFT_JAGUAR_1() {return 1;}
    /// second left jaguar
    public int LEFT_JAGUAR_2() {return 2;}
    /// first right jaguar
    public int RIGHT_JAGUAR_1() {return 3;}
    /// second right jaguar
    public int RIGHT_JAGUAR_2() {return 4;}
    /// lifter jaguar
    public int LIFTER_JAGUAR() {return 6;}

    public static class Const2011CAN extends Const2011 {
        /// first left jaguar
        public int LEFT_JAGUAR_1() {return 2;}
        /// second left jaguar
        public int LEFT_JAGUAR_2() {return 3;}
        /// first right jaguar
        public int RIGHT_JAGUAR_1() {return 6;}
        /// second right jaguar
        public int RIGHT_JAGUAR_2() {return 7;}
        /// lifter jaguar
        public int LIFTER_JAGUAR() {return 4;}
    }
    
    /// claw victor
    public int CLAWVICTOR() {return 5;}
    /**
     * @deprecated use CLAWVICTOR
     */
    public int CLAWJAGUAR() {return CLAWVICTOR();}
    /// claw solenoid port
    public int CLAWSOLENOID() {return 1;}
    /// lifter potentiometer port
    public int LIFTERPOTENTIOMTER() {return 1;}
    /// claw potentiometer port
    public int CLAWPOTENTIOMETER() {return 2;}
    /// lifter top limit switch
    public int LIFTERTOPLIMITPORT() {return 1;}
    /// lifter bottom limit switch
    public int LIFTERBOTTOMLIMITPORT() {return 2;}
    /// claw top limit switch
    public int CLAWTOPLIMITPORT() {return 3;}
    /// claw bottom limit switch
    public int CLAWBOTTOMLIMITPORT() {return 4;}

    /// minibot deployment solenoid
    public int MINIBOTSOLENOID() {return 2;}
    /// first minibot trigger
    public int MINIBOTBUTTON1() {return 7;}
    /// second minibot trigger
    public int MINIBOTBUTTON2() {return 8;}


    /// left joystick ID
    public int LEFTJOYSTICK() {return 2;}
    /// right joystick ID
    public int RIGHTJOYSTICK() {return 1;}
    /// gamepad ID
    public int GAMEPAD() {return 3;}

    /// gamepad button to enable claw
    public int ENABLECLAWGAMEPADBUTTON() {return 6;}
    /// joystick button to enable claw
    public int ENABLECLAWJOYSTICKBUTTON() {return 1;}
    /// lifter down preset button
    public int LIFTERDOWNBUTTON() {return 4;}
    /// lifter low preset button
    public int LIFTERLOWBUTTON() {return 1;}
    /// lifter middle preset button
    public int LIFTERMIDDLEBUTTON() {return 2;}
    /// lifter high preset button
    public int LIFTERHIGHBUTTON() {return 3;}
    /// lifter shift button
    public int LIFTERSHIFTBUTTON() {return 5;}

    // moter inversions (false if 1, true if -1)
    /// left moter inversion
    public int LEFTINVERTED() {return 1;}
    /// right motor inversion
    public int RIGHTINVERTED() {return -1;}

    // lifter heights
    /// lifter down preset
    public int LIFTERDOWN() {return 201;}
    /// lifter loading slot preset
    public int LIFTERSLOT() {return 393;}
    /// lifter shifted low preset
    public int LIFTERLOWSHIFT() {return 382;}
    /// lifter low preset
    public int LIFTERLOW() {return 382;}
    /// lifter shifted middle preset
    public int LIFTERMIDDLESHIFT() {return 587;}
    /// lifter middle preset
    public int LIFTERMIDDLE() {return 535;}
    /// lifter shifted high preset
    public int LIFTERHIGHSHIFT() {return 787;}
    /// lifter high preset
    public int LIFTERHIGH() {return 766;}
    /// No lift button pressed.
    public int NOLIFTEBUTTONPRESSED() {return 2342;}

    // claw autonomous setting
    /// arm autonomous preset
    public int ARMAUTONOMOUSVALUE() {return 300;}
    /// allowed error for arm
    public int ARMAUTONOMOUSERR0R() {return 20;}


    // lifter and claw soft limits
    /// lifter bottom soft limit
    public int LIFTERBOTTOMLIMIT() {return 382;}
    /// lifter bottom hard limit
    public int LIFTERTOPLIMIT() {return 812;}
    /// claw bottom soft limit
    public int CLAWBOTTOMLIMIT() {return 431;}
    /// claw top soft limit
    public int CLAWTOPLIMIT() {return 540;}

    /// zone margins
    public int LIFTERSTOPZONE() {return 10;}
    public int LIFTERREDZONE() {return 80;}

    public double LIFTERREDZONESPEED() {return .2;}
}
